The present invention relates to display systems and, more particularly, to gamma correction to compensate for the non-linear characteristics of display devices.
Rendering of realistic images (e.g., two- or three-dimensional images) on a display device such as a display monitor has been a primary goal of graphics system designers. Rendering images of real or imaginary objects typically involves generating perspective projections of the objects and applying lighting effects to the visible surfaces. For example, conventional techniques typically apply various lighting or illumination models and surface rendering algorithms (e.g., Phong lighting, Gouraud shading, etc.) to determine the intensity values of individual pixels that comprise an image for display.
Among other requirements, rendering of realistic images requires an accurate modeling of colors and lighting effects including light reflections, transparency, surface texture, shadows, etc. In general, the illumination models generate a linear range of intensities (e.g., 0 to 1.0). For instance, an RGB color (0.25, 0.25, 0.25) represents one-half the intensity of RGB color (0.5, 0.5, 0.5) and one-third the intensity of RGB color (0.75, 0.75, 0.75). These RGB values are usually stored as linear values with one or more bits for each of the three R, G, and B components. In this linear arrangement, a pixel with the value of (64, 64, 64), for example, has twice the intensity of a pixel with the value (32, 32, 32).
Display devices, however, typically exhibit non-linear characteristics that hinder display of linear intensities. For example, FIG. 1A shows a typical response curve 102 of an exemplary display device. The response curve 102 plots normalized intensity displayed on the display device as a function of normalized electron gun voltage of the display device. The response curve of the display device shows that the displayed intensity and the electron gun voltage are non-linear. Such non-linear characteristics generally lead to inaccurate or unrealistic images.
A response curve can generally be described in the form of the equation I=.alpha.V.sup..gamma., where I is the displayed intensity, V is the input voltage to a display device, and .alpha. and .gamma. depend on the characteristics of a display device. The non-linearity of display devices is typically characterized by an exponential value .gamma. of between 2.0 and 3.0.
To correct the non-linearity associated with .gamma., a technique commonly known as "gamma correction" has been widely used to compensate for the non-linear characteristics of display devices. Gamma correction essentially involves determining a compensating correction curve to allow linear input-output characteristics. An input voltage required to produce a desired intensity is determined in accordance with the equation V=(I/.gamma.).sup.1/.gamma..
FIG. 1B shows an exemplary gamma correction curve 104 for mapping pixel intensities to input voltages of a display device. In display systems, the gamma correction curve 104 may be implemented as a lookup table, which samples and stores pixel intensities and associated input voltages. The pixel intensities produced are used as indices to select the associated input voltages stored in the lookup table. The input voltages are then fed to the display device for generating images. The gamma correction table is thus used to compensate for the non-linear characteristics of the display device.
Conventional gamma correction methods typically store the gamma table in a RAM unit for performing gamma correction. Unfortunately, these techniques often do not provide adequate gamma correction in a low luminance range typically associated with low light conditions (e.g., a night scene). As shown in FIG. 1B, the portion of gamma correction curve 104 in low luminance region 106 is significantly steeper than portion of curve 104 in higher luminance region 108. Hence, the intensity difference between two adjacent samples in the low luminance region 106 of gamma correction curve 104 is significantly greater than for two adjacent samples in the higher luminance region 108 of curve 104.
As a solution, some conventional display systems have implemented higher resolutions and intensity levels in all luminance regions by employing a larger RAM to store a gamma correction table and a wider datapath to access the RAM. For example, a conventional computer graphics system uses a 64 K.times.36 bit RAM to store 64K intensity levels as gamma table entries. This system uses a full 16-bit datapath to access the entries stored in the RAM. It has been empirically determined that human eyes cannot distinguish between two intensities when the difference therebetween is less than or equal to about 1%. The use of 64 K intensity levels along with the 16-bit datapath ensures that the intensity change between two consecutive intensity levels is less than or equal to about 1% throughout the 64 K intensity levels.
Implementing a full 16-bit datapath with a 64 K RAM, however, is costly to implement in all but the most expensive computer graphics systems. For example, such a system is costly since it requires a large lookup table with attendant cost of moving 16-bit data per component. Such large datapath and RAM require a large die area in an integrated circuit chip or fast external memory. Furthermore, such design requires complex and expensive supporting circuitry.
Another conventional approach has generated a gamma correction curve of 4 K (i.e., 4,096) intensity levels and uses 1 K (i.e., 1024) entries from the 4 K intensity levels to perform gamma correction. This technique uses a 12-bit datapath to receive 12-bit input data. The gamma correction curve is partitioned into three segments. Specifically, the first 512 intensity levels from the low luminance region are stored at full 12-bit resolution in a 512.times.12 bit RAM. Of the next 512 entries from the intermediate luminance region, 256 entries (i.e., 50%) are selected and stored at 8-bit resolution in a 256.times.8 bit RAM. Finally, of the remaining 3072 entries, 768 entries (i.e., 25%) are selected and stored at 8-bit resolution in a 768.times.8 bit RAM. The three most significant bits in the 12-bit input data are used to select from which RAM to look up an appropriate entry in the RAM.
While this technique provides improved RAM space utilization, it does not improve low luminance gamma correction as it does not provide a sufficient number of intensity levels to eliminate significant banding effects across the entire gamma curve.
Thus, what is needed is a technique for providing gamma correction in all regions of a gamma correction curve including the low luminance range without employing expensive and complex hardware and supporting circuitry. In addition, what is needed is a gamma correction technique that provides sufficient resolution in all regions of the gamma correction curve so that significant banding effects are substantially eliminated.